From a977094e181c9e79325e65d419783fd154ccb28e Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Thu, 6 Feb 2020 15:54:57 +0000 Subject: [PATCH] window: Remove all old mnemonic handling API --- docs/reference/gtk/gtk4-sections.txt | 4 - gtk/gtkapplicationaccels.c | 2 +- gtk/gtkwindow.c | 249 +++------------------------ gtk/gtkwindow.h | 14 -- gtk/gtkwindowprivate.h | 1 - 5 files changed, 27 insertions(+), 243 deletions(-) diff --git a/docs/reference/gtk/gtk4-sections.txt b/docs/reference/gtk/gtk4-sections.txt index 0bf40340e2..136244850b 100644 --- a/docs/reference/gtk/gtk4-sections.txt +++ b/docs/reference/gtk/gtk4-sections.txt @@ -4269,8 +4269,6 @@ gtk_window_is_active gtk_window_is_maximized gtk_window_get_toplevels gtk_window_list_toplevels -gtk_window_add_mnemonic -gtk_window_remove_mnemonic gtk_window_get_focus gtk_window_set_focus gtk_window_get_default_widget @@ -4291,7 +4289,6 @@ gtk_window_set_keep_above gtk_window_set_keep_below gtk_window_set_decorated gtk_window_set_deletable -gtk_window_set_mnemonic_modifier gtk_window_set_accept_focus gtk_window_set_focus_on_map gtk_window_set_startup_id @@ -4301,7 +4298,6 @@ gtk_window_get_default_icon_name gtk_window_get_default_size gtk_window_get_destroy_with_parent gtk_window_get_icon_name -gtk_window_get_mnemonic_modifier gtk_window_get_modal gtk_window_get_size gtk_window_get_title diff --git a/gtk/gtkapplicationaccels.c b/gtk/gtkapplicationaccels.c index a27501facf..e7a4f48948 100644 --- a/gtk/gtkapplicationaccels.c +++ b/gtk/gtkapplicationaccels.c @@ -346,7 +346,7 @@ gtk_application_accels_foreach_key (GtkApplicationAccels *accels, { AccelKey *accel_key = key; - (* callback) (window, accel_key->key, accel_key->modifier, FALSE, user_data); + (* callback) (window, accel_key->key, accel_key->modifier, user_data); } } diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c index 63d1279ca5..1911b37226 100644 --- a/gtk/gtkwindow.c +++ b/gtk/gtkwindow.c @@ -53,7 +53,6 @@ #include "gtkmain.h" #include "gtkmarshalers.h" #include "gtkmessagedialog.h" -#include "gtkmnemonichash.h" #include "gtkpointerfocusprivate.h" #include "gtkpopovermenuprivate.h" #include "gtkmodelbuttonprivate.h" @@ -186,8 +185,6 @@ struct _GtkWindowPopover typedef struct { - GtkMnemonicHash *mnemonic_hash; - GtkWidget *attach_widget; GtkWidget *default_widget; GtkWidget *initial_focus; @@ -200,8 +197,6 @@ typedef struct GQueue popovers; - GdkModifierType mnemonic_modifier; - gchar *startup_id; gchar *title; @@ -1756,7 +1751,6 @@ gtk_window_init (GtkWindow *window) priv->modal = FALSE; priv->gravity = GDK_GRAVITY_NORTH_WEST; priv->decorated = TRUE; - priv->mnemonic_modifier = GDK_MOD1_MASK; priv->display = gdk_display_get_default (); priv->state = GDK_SURFACE_STATE_WITHDRAWN; @@ -2614,130 +2608,6 @@ gtk_window_remove_accel_group (GtkWindow *window, _gtk_window_notify_keys_changed (window); } -static GtkMnemonicHash * -gtk_window_get_mnemonic_hash (GtkWindow *window, - gboolean create) -{ - GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - - if (!priv->mnemonic_hash && create) - priv->mnemonic_hash = _gtk_mnemonic_hash_new (); - - return priv->mnemonic_hash; -} - -/** - * gtk_window_add_mnemonic: - * @window: a #GtkWindow - * @keyval: the mnemonic - * @target: the widget that gets activated by the mnemonic - * - * Adds a mnemonic to this window. - */ -void -gtk_window_add_mnemonic (GtkWindow *window, - guint keyval, - GtkWidget *target) -{ - g_return_if_fail (GTK_IS_WINDOW (window)); - g_return_if_fail (GTK_IS_WIDGET (target)); - - _gtk_mnemonic_hash_add (gtk_window_get_mnemonic_hash (window, TRUE), - keyval, target); - _gtk_window_notify_keys_changed (window); -} - -/** - * gtk_window_remove_mnemonic: - * @window: a #GtkWindow - * @keyval: the mnemonic - * @target: the widget that gets activated by the mnemonic - * - * Removes a mnemonic from this window. - */ -void -gtk_window_remove_mnemonic (GtkWindow *window, - guint keyval, - GtkWidget *target) -{ - g_return_if_fail (GTK_IS_WINDOW (window)); - g_return_if_fail (GTK_IS_WIDGET (target)); - - _gtk_mnemonic_hash_remove (gtk_window_get_mnemonic_hash (window, TRUE), - keyval, target); - _gtk_window_notify_keys_changed (window); -} - -/* - * gtk_window_mnemonic_activate: - * @window: a #GtkWindow - * @keyval: the mnemonic - * @modifier: the modifiers - * - * Activates the targets associated with the mnemonic. - * - * Returns: %TRUE if the activation is done. - */ -static gboolean -gtk_window_mnemonic_activate (GtkWindow *window, - guint keyval, - GdkModifierType modifier) -{ - GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - - g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE); - - if (priv->mnemonic_modifier == (modifier & gtk_accelerator_get_default_mod_mask ())) - { - GtkMnemonicHash *mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE); - if (mnemonic_hash) - return _gtk_mnemonic_hash_activate (mnemonic_hash, keyval); - } - - return FALSE; -} - -/** - * gtk_window_set_mnemonic_modifier: - * @window: a #GtkWindow - * @modifier: the modifier mask used to activate - * mnemonics on this window. - * - * Sets the mnemonic modifier for this window. - **/ -void -gtk_window_set_mnemonic_modifier (GtkWindow *window, - GdkModifierType modifier) -{ - GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - - g_return_if_fail (GTK_IS_WINDOW (window)); - g_return_if_fail ((modifier & ~GDK_MODIFIER_MASK) == 0); - - priv->mnemonic_modifier = modifier; - _gtk_window_notify_keys_changed (window); -} - -/** - * gtk_window_get_mnemonic_modifier: - * @window: a #GtkWindow - * - * Returns the mnemonic modifier for this window. See - * gtk_window_set_mnemonic_modifier(). - * - * Returns: the modifier mask used to activate - * mnemonics on this window. - **/ -GdkModifierType -gtk_window_get_mnemonic_modifier (GtkWindow *window) -{ - GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - - g_return_val_if_fail (GTK_IS_WINDOW (window), 0); - - return priv->mnemonic_modifier; -} - /** * gtk_window_get_focus: * @window: a #GtkWindow @@ -4382,16 +4252,11 @@ gtk_window_finalize (GObject *object) { GtkWindow *window = GTK_WINDOW (object); GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - GtkMnemonicHash *mnemonic_hash; g_clear_pointer (&priv->extra_input_region, cairo_region_destroy); g_free (priv->title); gtk_window_release_application (window); - mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE); - if (mnemonic_hash) - _gtk_mnemonic_hash_free (mnemonic_hash); - if (priv->geometry_info) { g_free (priv->geometry_info); @@ -5710,8 +5575,6 @@ _gtk_window_query_nonaccels (GtkWindow *window, guint accel_key, GdkModifierType accel_mods) { - GtkWindowPrivate *priv = gtk_window_get_instance_private (window); - g_return_val_if_fail (GTK_IS_WINDOW (window), FALSE); /* movement keys are considered locked accels */ @@ -5728,14 +5591,6 @@ _gtk_window_query_nonaccels (GtkWindow *window, return TRUE; } - /* mnemonics are considered locked accels */ - if (accel_mods == priv->mnemonic_modifier) - { - GtkMnemonicHash *mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE); - if (mnemonic_hash && _gtk_mnemonic_hash_lookup (mnemonic_hash, accel_key)) - return TRUE; - } - return FALSE; } @@ -5784,9 +5639,6 @@ gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window) GList *seats, *s; gboolean retval = FALSE; - if (!priv->mnemonic_modifier) - return FALSE; - seats = gdk_display_list_seats (gtk_widget_get_display (GTK_WIDGET (window))); for (s = seats; s; s = s->next) @@ -5795,7 +5647,7 @@ gtk_window_has_mnemonic_modifier_pressed (GtkWindow *window) GdkModifierType mask; gdk_device_get_state (dev, priv->surface, NULL, &mask); - if (priv->mnemonic_modifier == (mask & gtk_accelerator_get_default_mod_mask ())) + if ((mask & gtk_accelerator_get_default_mod_mask ()) == GDK_MOD1_MASK) { retval = TRUE; break; @@ -7779,21 +7631,6 @@ gtk_window_activate_menubar (GtkWidget *widget, return TRUE; } -static void -gtk_window_mnemonic_hash_foreach (guint keyval, - GSList *targets, - gpointer data) -{ - struct { - GtkWindow *window; - GtkWindowKeysForeachFunc func; - gpointer func_data; - } *info = data; - GtkWindowPrivate *priv = gtk_window_get_instance_private (info->window); - - (*info->func) (info->window, keyval, priv->mnemonic_modifier, TRUE, info->func_data); -} - static void _gtk_window_keys_foreach (GtkWindow *window, GtkWindowKeysForeachFunc func, @@ -7801,22 +7638,6 @@ _gtk_window_keys_foreach (GtkWindow *window, { GtkWindowPrivate *priv = gtk_window_get_instance_private (window); GSList *groups; - GtkMnemonicHash *mnemonic_hash; - - struct { - GtkWindow *window; - GtkWindowKeysForeachFunc func; - gpointer func_data; - } info; - - info.window = window; - info.func = func; - info.func_data = func_data; - - mnemonic_hash = gtk_window_get_mnemonic_hash (window, FALSE); - if (mnemonic_hash) - _gtk_mnemonic_hash_foreach (mnemonic_hash, - gtk_window_mnemonic_hash_foreach, &info); groups = gtk_accel_groups_from_object (G_OBJECT (window)); while (groups) @@ -7829,7 +7650,7 @@ _gtk_window_keys_foreach (GtkWindow *window, GtkAccelKey *key = &group->priv->priv_accels[i].key; if (key->accel_key) - (*func) (window, key->accel_key, key->accel_mods, FALSE, func_data); + (*func) (window, key->accel_key, key->accel_mods, func_data); } groups = groups->next; @@ -7857,7 +7678,6 @@ struct _GtkWindowKeyEntry { guint keyval; guint modifiers; - guint is_mnemonic : 1; }; static void @@ -7870,7 +7690,6 @@ static void add_to_key_hash (GtkWindow *window, guint keyval, GdkModifierType modifiers, - gboolean is_mnemonic, gpointer data) { GtkKeyHash *key_hash = data; @@ -7879,7 +7698,6 @@ add_to_key_hash (GtkWindow *window, entry->keyval = keyval; entry->modifiers = modifiers; - entry->is_mnemonic = is_mnemonic; /* GtkAccelGroup stores lowercased accelerators. To deal * with this, if was specified, uppercase. @@ -7969,18 +7787,11 @@ gtk_window_activate_key (GtkWindow *window, for (tmp_list = entries; tmp_list; tmp_list = tmp_list->next) { GtkWindowKeyEntry *entry = tmp_list->data; - if (entry->is_mnemonic) + if (enable_accels && !found_entry) { found_entry = entry; break; } - else - { - if (enable_accels && !found_entry) - { - found_entry = entry; - } - } } g_slist_free (entries); @@ -7988,39 +7799,31 @@ gtk_window_activate_key (GtkWindow *window, if (found_entry) { - if (found_entry->is_mnemonic) - { - return gtk_window_mnemonic_activate (window, found_entry->keyval, - found_entry->modifiers); - } - else + if (enable_accels) { - if (enable_accels) + if (gtk_accel_groups_activate (G_OBJECT (window), found_entry->keyval, found_entry->modifiers)) + return TRUE; + + if (priv->application) { - if (gtk_accel_groups_activate (G_OBJECT (window), found_entry->keyval, found_entry->modifiers)) - return TRUE; - - if (priv->application) - { - GtkWidget *focused_widget; - GtkActionMuxer *muxer; - GtkApplicationAccels *app_accels; - - focused_widget = gtk_window_get_focus (window); - - if (focused_widget) - muxer = _gtk_widget_get_action_muxer (focused_widget, FALSE); - else - muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (window), FALSE); - - if (muxer == NULL) - return FALSE; - - app_accels = gtk_application_get_application_accels (priv->application); - return gtk_application_accels_activate (app_accels, - G_ACTION_GROUP (muxer), - found_entry->keyval, found_entry->modifiers); - } + GtkWidget *focused_widget; + GtkActionMuxer *muxer; + GtkApplicationAccels *app_accels; + + focused_widget = gtk_window_get_focus (window); + + if (focused_widget) + muxer = _gtk_widget_get_action_muxer (focused_widget, FALSE); + else + muxer = _gtk_widget_get_action_muxer (GTK_WIDGET (window), FALSE); + + if (muxer == NULL) + return FALSE; + + app_accels = gtk_application_get_application_accels (priv->application); + return gtk_application_accels_activate (app_accels, + G_ACTION_GROUP (muxer), + found_entry->keyval, found_entry->modifiers); } } } diff --git a/gtk/gtkwindow.h b/gtk/gtkwindow.h index 88f55b013d..4512135c83 100644 --- a/gtk/gtkwindow.h +++ b/gtk/gtkwindow.h @@ -190,20 +190,6 @@ GDK_AVAILABLE_IN_ALL void gtk_window_set_has_user_ref_count (GtkWindow *window, gboolean setting); -GDK_AVAILABLE_IN_ALL -void gtk_window_add_mnemonic (GtkWindow *window, - guint keyval, - GtkWidget *target); -GDK_AVAILABLE_IN_ALL -void gtk_window_remove_mnemonic (GtkWindow *window, - guint keyval, - GtkWidget *target); -GDK_AVAILABLE_IN_ALL -void gtk_window_set_mnemonic_modifier (GtkWindow *window, - GdkModifierType modifier); -GDK_AVAILABLE_IN_ALL -GdkModifierType gtk_window_get_mnemonic_modifier (GtkWindow *window); - GDK_AVAILABLE_IN_ALL void gtk_window_present (GtkWindow *window); GDK_AVAILABLE_IN_ALL diff --git a/gtk/gtkwindowprivate.h b/gtk/gtkwindowprivate.h index 03683a91a2..c4b5cc6330 100644 --- a/gtk/gtkwindowprivate.h +++ b/gtk/gtkwindowprivate.h @@ -56,7 +56,6 @@ void gtk_window_check_resize (GtkWindow *self); typedef void (*GtkWindowKeysForeachFunc) (GtkWindow *window, guint keyval, GdkModifierType modifiers, - gboolean is_mnemonic, gpointer data); gboolean gtk_window_emit_close_request (GtkWindow *window); -- 2.30.2